
package TokensDelLenguaje;

import PolacaInversa.Registro;
import java.util.ArrayList;

public class Token_OperadorAsig extends Token_Operador {

    public Token_OperadorAsig(){
        super(Tokens.asignacion);
    }
    
    public ArrayList conversionImplicita(Token_Uint operando1, Token_Uint operando2, Registro reg) {
        ArrayList list = new ArrayList();
        String s = "";
        Tokens op1 = operando1.getId();
        Tokens op2 = operando2.getId();
        
        if ((op1 == Tokens.const_uinteger && op2 == Tokens.const_uinteger) || (op1 == Tokens.const_ulongint && op2 == Tokens.const_ulongint)) {
            list.add(s);
        }
            else if (op1 == Tokens.const_ulongint && op2 == Tokens.const_uinteger) {
                //Generar Assembler.
                s = conversion(operando1, reg);
                list.add(s);
            }
                else if (op1 == Tokens.const_uinteger && op2 == Tokens.const_ulongint) {
                    //Debe arrojar un ERROR
                    // Incompatibilidad de tipos en ASIGANCIÓN.
                    list.add(false);
                    list.add(new String("Error de Gen. de Código: linea " + this.getLinea() + " - Incompatibilidad de tipos en asignación"));
                    
                }
        
        list.add(0, true);      
        return list;
    }
    
    @Override
    public ArrayList traducir_assembler(Token o1, Token o2, Registro reg){
        return super.traducir_assembler(o1, o2, reg);
    }
}
